正則表達式常用來處理匹配字符串,一般多是用來網路爬蟲,與字串搜尋是否有什麼關鍵字有點類似,但是功能更強大,可以判斷一整片文章中是否有出現自定義的規則,go 提供 regexp 標準庫來處理正則表達式的問題,以下是參考 參考來源1 與 參考來源2 的內容:
.:匹配除換行符以外的任意字符
[...]:匹配字符集,如果第一字符是^,則剛好相反,可參考下面範例
\w:匹配[A-Za-z0-9]
\s:匹配任意的空白符號
\d:匹配數字[0-9]
\b:匹配單詞的開始或結束
^:匹配字符串的開始
$:匹配字符串的結束
*:重複零次或更多次
+:重複一次或更多次
?:重複零次或一次
{n}:重複n次
{n,}:重複n次或更多次
{n,m}:重複n到m次
上面的規則看起來有些抽象,下面用一些小範例來解釋:
const ComparedSentence = "abc@ade.com abd@bcd.com"
func main() {
//解析正则表達式,如果成功返回解释器
reg := regexp.MustCompile(`a[^\t]+.com`) // \t表空格,[^\t]表示除了空格外,其他都可
if reg == nil {
fmt.Println("regexp err")
return
}
result := reg.FindAllStringSubmatch(ComparedSentence, -1)
fmt.Println("result = ", result)
}
輸出結果為:
result = [[abc@ade.com] [abd@bcd.com]]
一般來說,我自己比較常用的是 [...] 與 ^ 以及 * 與 + ,這規則應該不用特別背,要的時後再查也行
https://github.com/luckyuho/ithome30-golang/tree/main/day19